/*************************************************************************
	> File Name: 001.HZOJ275.cPP
	> Author: Maureen 
	> Mail: Maureen@qq.com 
	> Created Time: 三  2/24 11:55:34 2021
 ************************************************************************/

/**
 *题目描述
很久很久以前，森林里住着一群兔子。有一天，兔子们想要研究自己的 𝐷𝑁𝐴 序列。我们首先选取一个好长好长的 𝐷𝑁𝐴 序列（小兔子是外星生物，𝐷𝑁𝐴 序列可能包含 26 个小写英文字母），然后我们每次选择两个区间，询问如果用两个区间里的 𝐷𝑁𝐴 序列分别生产出来两只兔子，这两个兔子是否一模一样。注意两个兔子一模一样只可能是他们的 𝐷𝑁𝐴 序列一模一样。

输入
第一行一个 𝐷𝑁𝐴 字符串 𝑆。
接下来一个数字 𝑚，表示 𝑚 次询问。
接下来 𝑚 行，每行四个数字 𝑙1,𝑟1,𝑙2,𝑟2，分别表示此次询问的两个区间，注意字符串的位置从 1 开始编号。

输出
对于每次询问，输出一行表示结果。如果两只兔子完全相同输出 𝑌𝑒𝑠，否则输出 𝑁𝑜。
 *
 */


#include <iostream>
using namespace std;

#define MAX_N 1000000
#define P 9973
#define base 13

long long inv[P]; //记录每个数的逆元
long long sum[MAX_N + 5]; //前缀和
long long k[MAX_N + 5]; //记录base^k的结果
char s[MAX_N + 5]; //输入的完整字符串

void init() {
    inv[1] = 1; // 1的逆元为1
    // x' = -k * (r ^ (-1)), k = P / x, r = P % x
    for (long long i = 2; i < P; i++) {
        inv[i] = ((-(P / i) * inv[P % i]) % P + P) % P;
    }
    k[0] = 1; //base^0 = 1
    for (long long i = 1; i <= MAX_N; i++) {
        k[i] = (k[i - 1] * base) % P;
    }
    sum[0] = 0;
    for (long long i = 1; s[i]; i++){
        sum[i] = (sum[i - 1] + s[i] * k[i]) % P;
    }
    return ;
}

//获取字符串对应的hash值: l~r的和 * inv[base^k]
long long getHashValue(long long l, long long r) {
    return ((sum[r] - sum[l - 1]) % P * inv[k[l]] % P + P) % P;
}

//暴力匹配
int isSame(long long l1, long long l2, long long n) {
    for (long long k = 0; k < n; k++) {
        if (s[l1 + k] - s[l2 + k]) return false;
    }
    return true;
}

int main() {
    scanf("%s", s + 1);
    long long m, l1, r1, l2, r2;
    init();
    scanf("%lld", &m);
    for (long long i = 0; i < m; i++) {
        scanf("%lld%lld%lld%lld", &l1, &r1, &l2, &r2);
        long long val1 = getHashValue(l1, r1);
        long long val2 = getHashValue(l2, r2);
        long long len1 = r1 - l1 + 1;
        long long len2 = r2 - l2 + 1;
        if (len1 - len2 || val1 - val2) printf("No\n");
        else {
            if (isSame(l1, l2, len1)) printf("Yes\n"); 
            else printf("No\n");
        }
    }

    return 0;
}
